﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Logica.Clases;
using vudu.EnlaceDatos.SqlServer;
using AjaxControlToolkit;

namespace vudu.PaginasWeb.G6Pensum
{
    public partial class ActivarPensum : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                string miRol = (string)Session["rol"];
                if (miRol != "Escuela")
                    Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");
                Escuela miEscuela = (Escuela)Session["Usuario"];
                nombreEscuela.Text ="Escuela: "+ miEscuela.NombreEscuela;
                Session["idMiEscuela"] = miEscuela.IdEscuela;
                //carga todos los pensum inactivos, para solo uno ser actvidao
                cargaPensumsInactivos(miEscuela);
            }
            catch 
            {
                mensaje.Text = "Error: no se puede conectar con la base de datos";
                mensaje.CssClass = "transaccionFallida";
                mensaje.Visible = true;
            }
        }

        //metodo que me retorna true si existe un pensum activo
        public bool cargaPensumActivo(Escuela miEscuela)
        {
            Pensum elActivo = new Pensum();
            elActivo.IdPensum = miEscuela.ConsultarPensumActivoEscuela(miEscuela);
            elActivo.PeriodosActivos = elActivo.ConsultarPeridosAcademicos(elActivo.IdPensum);

            if (elActivo.IdPensum != 0)
                return true;
            else
                return false;
        }

        //metodo encargdo de listar los posibles pensum a activar
        public void cargaPensumsInactivos(Escuela miEscuela)
        {
            
            if (cargaPensumActivo(miEscuela))
                pensunActivo.Visible = true;
            
            else
            {
            
                miEscuela.ListaPensum = miEscuela.ConsultarPensums(miEscuela);
                foreach (Pensum inactivo in miEscuela.ListaPensum)
                {
                    inactivo.PeriodosActivos = inactivo.ConsultarPeridosAcademicos(inactivo.IdPensum);
                }

                foreach (Pensum elInactivo in miEscuela.ListaPensum)
                {
                    TableRow fila = new TableRow();
                    Button btnActivarPensum = new Button();
                    btnActivarPensum.ID = elInactivo.IdPensum.ToString();
                    btnActivarPensum.Text = "Activar Pensum";
                    btnActivarPensum.CssClass = "boton";
                    btnActivarPensum.Attributes.Add("onclick", "return confirm('Esta seguro de querer actviar este pensum?');");
                    btnActivarPensum.Click += new System.EventHandler(verPensum);

                    TableCell campoBoton = new TableCell();
                    campoBoton.ID = "campoBoton" + (elInactivo.IdPensum * 2).ToString();
                    campoBoton.Controls.Add(btnActivarPensum);

                    TableCell campoCabera = new TableCell();
                    Label titulo = new Label();
                    titulo.ID = "campoCabecera" + (elInactivo.IdPensum * 2).ToString();
                    titulo.Text = "Periodos academicos que tuvo en vigencia : " + "<br/>" +
                              listaPeriodosAcademicos(elInactivo.PeriodosActivos);
                    campoCabera.Controls.Add(titulo);
                    campoCabera.Attributes.Add("style", "padding:5px");
                    fila.Controls.Add(campoCabera);
                    fila.Controls.Add(campoBoton);
                    TablePensumInactivo.Rows.Add(fila);
                }
            }
        }

        //metodo encargado de listar y concatenar los periodos academicos de ese pensum para ser impresos en formato html
        public string listaPeriodosAcademicos(List<String> misPeriodosVigentes)
        {
            String fechaPeriodoAcademico = " ";
            foreach (String i in misPeriodosVigentes)
            {
                fechaPeriodoAcademico = fechaPeriodoAcademico + i + "<br/>";

            }
            return fechaPeriodoAcademico;
        }

        //metodo encargado de cambiar el estatus del pensum seleccionado (ejecucion del boton)
        public void verPensum(object sender, EventArgs e)
        {
            Pensum miPensum = new Pensum();
            Button botonPresionado = (Button)sender;
            Session["idMiPensum"] = Convert.ToInt32(botonPresionado.ID);
            miPensum.IdPensum = Convert.ToInt32(botonPresionado.ID);
            //realizada la operacion se muestra una confirmacion
            if (miPensum.ActivarPensum(miPensum))
                ShowAlertMessage("El pensum fue Activado sin problemas, recuerde que solo puede tener un pensum activado");
            else
            {
                mensaje.Text = "Error: no se puede conectar con la base de datos";
                mensaje.CssClass = "mensaje";
                mensaje.Visible = true;
            }
        }

        //metodo para mostrar ventanas de alerta
        public static void ShowAlertMessage(string error)
        {

            Page page = HttpContext.Current.Handler as Page;
            if (page != null)
            {
                error = error.Replace("'", "\'");
                ScriptManager.RegisterStartupScript(page, page.GetType(), "err_msg", "alert('" + error + "');window.location='../Home/HomeEscuela.aspx';", true);
            }
        }

    }
}